home *** CD-ROM | disk | FTP | other *** search
Text File | 1994-08-15 | 1.8 KB | 93 lines | [TEXT/ALFA] |
- # Pete,
- #
- # The enclosed TCL procs implement the capability to save and restore the
- # current window/file list. I'm sure it needs some beefing up in the area of
- # error recovery, but it's worked well for me so far.
- #
- # Regards,
- # David
- # david.rogers@aldus.com
- # davidr@halcyon.com
-
-
- if {![string length [info commands fileMenuProc42]]} {
- rename fileMenuProc fileMenuProc42
- }
-
- proc fileMenuProc {menu item} {
- if {$item == "quit"} {
- saveState
- }
- fileMenuProc42 $menu $item
- }
-
- proc restoreNamedState {} {
- global HOME
- global fname
- if {!file exists "$HOME:States"} {
- message "No saved states!"
- return
- }
- set fname [listpick -p "Choose the state to restore:" [glob -t TEXT "$HOME:States:*"]]
- uplevel #0 {
- source $fname
- }
- restoreStateList
- }
-
-
- proc restoreState {} {
- global HOME
- global fname
- set fname "$HOME:States:State.tcl"
- uplevel #0 {
- if {[catch {source $fname}]} {
- alertnote "Error restoring state!"
- return
- }
- }
- restoreStateList
- }
-
-
- proc saveNamedState {} {
- global HOME
- set fname [getline "Save state in file:" "NewState.tcl"]
- if {[string length $fname] > 27 } {
- alertnote "$fname is not a valid file name - too long."
- return
- }
- if {[string first ":" $fname] != -1} {
- alertnote "$fname is not a valid file name - contains a ':'."
- return
- }
- saveStateByName $fname
- }
-
- proc saveState {} {
- saveStateByName "State.tcl"
- }
-
- proc saveStateByName stateFileName {
- global HOME
-
- if {![file exists "$HOME:States"]} {
- mkdir "$HOME:States"
- }
- set fname "$HOME:States:$stateFileName"
- set fileid [open $fname "w+"]
- puts $fileid "proc restoreStateList {} {"
- set winList [winNames -f]
- set lastWindow [expr [llength $winList] - 1]
- for {set Index $lastWindow} {$Index >= 0} {incr Index -1} {
- set f [lindex $winList $Index]
- puts $fileid " catch \{edit \"$f\"\}"
- }
- puts $fileid "}"
- close $fileid
-
- }
-
-
-
-